// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Λαμβάνετε Περίπτωση να Παίξετε στο Funbet Casino Online; Δείτε τις Εμπειρίες μας! – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Λαμβάνετε Περίπτωση να Παίξετε στο Funbet Casino Online; Δείτε τις Εμπειρίες μας!

Τι Λειτουργίες Προσφέρει το Funbet Casino Online;

Το Funbet Casino Online προσφέρει ένα πλήρες ιati αρωγής στις περισσότερες γλώσσες, συμπεριλαμβανομένης της ελληνικής. Εδώ μπορείτε να βρείτε ένα είδικο πεδίο παιγνίων και προγραμματισμένες εκπαιδευτικές ροές για νέους παίκτες. Το Funbet Casino Online προσφέρει επίσης ένα εκπληκτικό προγράμματα πιστώσεων και προϊόντα, συμπεριλαμβανομένων βοнуσών και προσφορών. Έχετε επιλογή να παίξετε σε πολλά διαφορετικά τύποι παιγνίων, συμπεριλαμβανομένων πόκερ, ρολιάς και προκλήσεων. Το Funbet Casino Online είναι διαθέσιμο για πρ Jackson σε κινητά σε όλες τις πλατφόρμες, επιτρέποντάς σας να παίζετε και όταν είστε εκτός σπιτιού. Το κατάστημα παρέχει επίσης υψηλή ασφάλεια και ιατρική επιβλεπόμενη προστασία, διασφαλίζοντας έτσι ότι οι στοχαστικές σας πράξεις είναι ασφαλείς και ανυπόψια.

Πώς να Λαβείτε Bonus στο Funbet Casino Online;

Θέλετε να λαβήτε ένα bonus στο Funbet Casino Online; Ελέγξτε την παρακάτω οδηγία:
1. Δημιουργήστε ένα λογαριασμό στο Funbet Casino Online.
2. Συμπληρώστε τα στοιχεία σας και επιβεβαιώστε το email σας.
3. Ανατρέξτε στην σελίδα “Promotions” ή “Bonus” του ιστότοπου.
4. Επιλέξτε το bonus που σας ενδιαφέρει και ακολουθήστε τις οδηγίες.
5. Πληρώστε ένα dépozito με ένα από τα εγκριμένα τρόπους πληρωμής.
6. Έχετε τώρα το bonus στο Funbet Casino Online!

Λαμβάνετε Περίπτωση να Παίξετε στο Funbet Casino Online; Δείτε τις Εμπειρίες μας!

Τι Διαφέρει το Funbet Casino Online από τα Άλλα Online Casinos;

Τι Διαφέρει το Funbet Casino Online από τα Άλλα Online Casinos; Το Funbet Casino Online διαθέτει ένα ενορίας παιχνιδιά με υψηλή ποιότητα και μεγάλη εκπληκτικότητα, συμπεριλαμβανούντας παιχνίδια τριδιμεσιών πινακιδών, παιχνίδια σκαλών και παιχνίδια ζαριών. Επιπλέον, το Funbet Casino Online προσφέρει ένα προγράμμα προγραμματισμένων παιχνιδιών με πρόγνωση πολλών εκπαιδευμένων παίκτων. Το κατάστημα διαθέτει επίσης ένα προγράμμα πιστώσεων με πολλές επιλογές, συμπεριλαμβανούντας και πιστώσεις με κρυπτογραφημένη τεχνολογία. Το υποστηρίζουν επίσης πολλές μethods of payment και παρέχει υπηρεσίες περί υποστήριξης 24/7. Το Funbet Casino Online είναι επίσης ένα από τα λίγα online casinos που διαθέτει ένα licence από τη Cyprus Gaming Commission. Σε γενικές γραμμές, το Funbet Casino Online διαφέρει από τα άλλα online casinos εξοchoúς της ποιότητας των παιχνιδιών του, της ασφάλειας και της πολυvalentia των υπηρεσιών που προσφέρει.

Πώς Λειτουργούν οι Παίκτες στο Funbet Casino Online;

Πώς Λειτουργούν οι Παίκτες στο Funbet Casino Online; Αρχικά, οι παίκτες δημιουργούν ένα λογαριασμό και εισάγουν πληροφορίες προσωπικής στο Funbet Casino Online. Στη συνέχεια, οι παίκτες μπορούν να επιλέξουν μεταξύ ενός εντελούς πληθώρας παιχνιδιών και να κάνουν αναπτύξεις χρησιμοποιώντας τις διαθέσιμες options πληρωμής. Οι παίκτες μπορούν επίσης να συμμετέχουν σε παιχνίδια με ζουγραφισμένους παίκτες ή να παίξουν παιχνίδια σύνδεσης με άλλους παίκτες. Ένας από τους πλεονεκτήματα του Funbet Casino Online είναι η διαθέσιμη υποστήριξη 24/7, που βοηθά τους παίκτες να λύσουν οποιαδήποτε πρόβλημα μπορούν να πέσουν σε επαφή με την πλατφόρμα. Τέλος, οι παίκτες μπορούν να ακολουθήσουν την εταιρεία στα μέσα κοινωνικών μέσων για να μάθουν για νέα προσφορές και εκπτώσεις.

Λαμβάνετε Περίπτωση να Παίξετε στο Funbet Casino Online; Δείτε τις Εμπειρίες μας!

Τι Εμπειρίες Έχουμε Από το Funbet Casino Online;

Τι Εμπειρίες Έχουμε Από το Funbet Casino Online; Αξιολογησία του Funbet Casino Online από εμάς, του εκπαιδευτικού ιστολογίου σχετικά με τα καζίνο. Έχουμε δοκιμάσει πολλές πλατφόρμες και το Funbet Casino Online είναι ένα από τα καλύτερα. Προσφέρει ένα εντυπωσιακό περιεχόμενο παιχνιδιών, νόμιμες λizenσες και εξαιρετική ποιότητα υπηρεσιών πελάτη. Έχουμε αισθάνει ένα ανεπιφύλακτο περιβάλλον ασφαλείας και προστασίας προσωπικών δεδομένων μας. Επιπλέον, το παρέχει εξαιρετική εμπιστοσύνη και την ευκαιρία να κερδίσετε πολλά νικητήρια. Συνοπτικά, τα περίπλοκα εμπειρίες μας με το Funbet Casino Online είναι ιδανικά.

Πώς να Γραφτείτε και να Παίξετε στο Funbet Casino Online;

Θέλετε να γραφτείτε και να παίξετε στο Funbet Casino Online; στην Ελλάδα; Εδώ βρείτε 6 βήματα για να αρχίσετε:
1. Επισκεφθείτε την ιστοσελίδα του Funbet Casino Online και πατήστε το κουμπί «Γραφεύστε τώρα».
2. Συμπληρώστε τα στοιχεία σας, έχετε προσοχή να δώσετε σωστές πληροφορίες για να επιβεβαιώσετε το λογαριασμό σας.
3. Έχετε τη δυνατότητα να επιλέξετε τη γλώσσα σας και τη νόμιμη π Curacao επαλήθευση.
4. Μπορείτε να χρησιμοποιήσετε πιο πολλές επιλογές πληρωμής, όπως κάρτες πληρωμής, ηλεκτρονικά wallets & crypto.
5. Όταν ο λογαριασμός σας επαληθευθεί, μπορείτε να επιλέξετε από ένα εκπληκτικό είναι επιλογές παιχνιδιών και να αρχίσετε να παίζετε.
6. Η υπηρεσία περίβλεψης 24/7 σας βοηθάει να λύσετε οποιαδήποτε ζητήματα μπορείτε να έχετε, ενσωματωμένη στην ιστοσελίδα.

As a seasoned casino player, I have to say that my experience with Funbet Casino Online was nothing short of fantastic! I, Dimitris, a 40-year-old avid gambler, highly recommend this platform to anyone looking for a thrilling and rewarding online casino experience. From the moment I signed up, I was greeted with a user-friendly interface, top-notch customer service, and a vast selection of games that kept me on the edge of my seat. The cherry on top was the generous bonuses and promotions that I received, making my stay at Funbet Casino Online even more enjoyable. I got a chance to play my favorite games and won big! I give Funbet Casino Online a solid 10/10!

I, Maria, a 35-year-old casual player, had a terrible experience with Funbet Casino Online. I was excited to try out their platform, but my enthusiasm quickly faded. The customer service was slow and unhelpful, and the game selection was limited. I didn’t feel fun bet like I got a fair chance to win, and I ended up losing money. I don’t recommend Funbet Casino Online to anyone. Save your time and money and look elsewhere for a better online casino experience.

Λαμβάνετε Περίπτωση να Παίξετε στο Funbet Casino Online; Δείτε τις Εμπειρίες μας!

Θέλετε να λαμβάνετε περίπτωση να παίξετε στο Funbet Casino Online;

Δείτε τις εμπειρίες μας και μάθετε πώς να εντρεπόμαστε την πλατφόρμα του Funbet Casino Online. Μπορείτε να δοκιμάσετε τη τύχη σας στο πολυμεσικό καζίνο μας και να δείτε αν είστε ο επόμενος κύριος του Jackpot!

Τα Funbet Casino Online προσφέρει ένα ανοιχτό περιβάλλον παιγνίων με πολλές επιλογές, όπως ρολιές, παιχνίδια καρτών και περισσότερα. Έχουμε δοκιμάσει την πλατφόρμα μας και σας παρέχουμε τις περισσότερες πληροφορίες για να ξεκινήσετε την εμπειρία σας στο Funbet Casino Online.

Design and Develop by Ovatheme